/** @format */

// export default function cartOptions
/** @format */
/* 导入依赖 */
// 第三方：框架、库
import { defineStore } from 'pinia'
import { reactive } from 'vue'
// 自定义：工具函数、类型声明
import { forEach, listToDict } from '@/libs/utils/index'
// import type { Cart as CartTypes } from "@my-types/index"

// 选项式
// const useCartStore = defineStore("cart", {
// 	state: () => ({ count: 123, name: "Eduardo"}),
// 	getters: {
// 		doubleCount: (state) => state.count * 2,
// 	},
// 	actions: {
// 		increment() {
// 			this.count++
// 		},
// 	},
// })

export default defineStore('cart', () => {
    /* 生命周期 */
    // 获取数据：
    // onMounted(() => {
    // })
    // 原始数据：服务器数据：api、本地数据：localStorage

    /* 处理数据 */
    // 基本数据（模拟）：服务器、本地数据、其它 store
    const goods_list = [
        {
            gid: 'g001',
            gname: '商品001',
            img: '',
            price: 128,
            count: 1,
            tags: ['折扣'],
            isSelected: true,
            isValid: true,
            recommends: ['g101'],
            inventory: 10,
        },
        {
            gid: 'g002',
            gname: '商品002',
            img: '',
            price: 24,
            count: 3,
            tags: ['热销'],
            isSelected: false,
            isValid: true,
            recommends: ['g101'],
            inventory: 10,
        },
        {
            gid: 'g003',
            gname: '商品003',
            img: '',
            price: 18,
            count: 5,
            tags: ['新品'],
            isSelected: true,
            isValid: true,
            recommends: ['g101'],
            inventory: 10,
        },
        {
            gid: 'g000',
            gname: '商品000',
            img: '',
            price: 9.9,
            count: 5,
            tags: ['热销'],
            isSelected: false,
            isValid: false,
            recommends: ['g101'],
            inventory: 10,
        },
        {
            gid: 'g007',
            gname: '商品007',
            img: '',
            price: 72,
            count: 5,
            tags: ['热销'],
            isSelected: false,
            isValid: false,
            recommends: ['g101'],
            inventory: 10,
        },
    ] // # 购物车列表
    const coupons_list = []
    // 页面数据：静态数据
    const validGoods: string[] = [] // # 合法商品 ID 列表
    const invalidGoods: string[] = [] // # 非法商品 ID 列表
    forEach(goods_list, (item) => {
        if (item.isValid) validGoods.push(item.gid)
        else invalidGoods.push(item.gid)
    })
    // console.log("初始化商品（有效/失效）列表：", validGoods, invalidGoods)
    // 页面数据：响应式数据，随购物车刷新
    const goods_dict = reactive(listToDict(goods_list, 'gid')) // # 元数据：商品 ID 映射表，通过商品 ID 索引，用于提供渲染数据，防止原始数据被污染

    /* 定义方法 */
    // function test() {}

    /* 暴露状态 */
    return {
        goods_dict,
        validGoods,
        invalidGoods,
        // totalAmount,
        // discountList,
        // discountAmount,
        // totalPrice,
    }
})

console.log('成功导入：useCartStore')
